He estado buscando mucho y no puedo encontrar una respuesta simple a mi problema, he visto cómo hacer búsquedas y cosas con LINQ to JSON (que parece complejo para mis necesidades).
Estoy usando n8n.io para intentar ejecutar una "Publicación de WebHook" -> Llamada de función -> Dividir en lote (1) -> Llamada API
Tengo un objeto JSON como este
$json = { "_id": "627bd2378b8bbe5c27a23669", "firstName": "John;Maria;Bruce", "lastName": "Doe;Phenix;Mclean", }Necesito enviar cada uno de estos como 3 objetos JSON individuales a otro webhook
Estoy tratando de encontrar un bucle for que pueda tomar $json y convertirlo en $json[0] , $json[1] , $json[2]
Dónde
$json[0] = { "firstName": "John", "lastName": "Doe", } $json[1] = { "firstName": "Maria", "lastName": "Phenix", } $json[2] = "firstName": "Bruce", "lastName": "Mclean", }Me está costando mucho encontrar la forma más sencilla y rápida de pasar de A -> B. ¿Algún consejo? ¿N8n.io me permite tomar el $json.body de un paso anterior y procesarlo con una función javascript?
Con la esperanza de que haya algún método integrado que pueda manejar esta traducción en uno o dos pasos dentro de un bucle for en Javascript.
//iterate through the combined JSON Object for (var k of $json) { //grab the row and split the string into 3 String.split($json[k]); //Create a $newObj with a full set of data in each index } return $newObjNo estoy familiarizado con n8n, pero si puede usar javascript para procesar $json , entonces puede dividir las claves de propiedades específicas y luego concatenarlas con un bucle for de esta manera:
const firstNames = $json.firstName.split(';'); const lastNames = $json.lastName.split(';'); const result = []; for (let i = 0; i < firstNames.length; i++) { result.push({firstName: firstNames[i], lastName: lastNames[i]}) } El código anterior asume que tanto el nombre como el lastName dentro $json firstName la misma cantidad de valores separados por punto y coma. Si uno de los dos puede tener más valores que otro, sugeriría usar Math.max para encontrar el que tiene la mayoría de los valores y usarlo en la condición de bucle for.
Muchas gracias a @metdodrbic por indicarme la dirección correcta.
Su código funcionó al 100%
Tuve que editar $json a $json.body debido a la forma peculiar en que n8n.io devuelve el objeto JSON de un paso anterior al bloque "función".
const firstNames = $json.body.firstName.split(';'); const lastNames = $json.body.lastName.split(';'); const result = []; for (let i = 0; i < firstNames.length; i++) { result.push({firstName: firstNames[i], lastName: lastNames[i]}) }